﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CapaNegocio;

public partial class abmCliente_ConsultarClientes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["UsuLogin"] == null)
        {
            Response.Redirect("../Default.aspx", true);
        }
        else
        {

            if (!IsPostBack)
            {
                Usuario usu = ((Usuario)(Session["UsuLogin"]));
                Label1.Text = usu.Apellido + ", " + usu.Nombre + " (" + usu.Perfil.Nombre + ")";

                List<TipoDoc> tipos = TipoDoc.buscarTiposDoc();
                TiposDoc.DataSource = tipos;
                TiposDoc.DataTextField = "nombre";
                TiposDoc.DataValueField = "codigo";
                TiposDoc.DataBind();

              
            }

            refreshGrid();

        }
    }

    protected void botonCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../MenuAdministrativo.aspx");
    }

    protected void grdClientes_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdClientes.PageIndex = e.NewPageIndex;
        grdClientes.DataBind();
    }

    protected void grdClientes_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = (DataTable)grdClientes.DataSource;

        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

            grdClientes.DataSource = dataView;
            grdClientes.DataBind();
        }
    }

    public string SortExpression
    {
        get { return (ViewState["SortExpression"] == null ? string.Empty : ViewState["SortExpression"].ToString()); }
        set { ViewState["SortExpression"] = value; }
    }
    public string SortDirection
    {
        get { return (ViewState["SortDirection"] == null ? string.Empty : ViewState["SortDirection"].ToString()); }
        set { ViewState["SortDirection"] = value; }
    }
    private string GetSortDirection(string sortExpression)
    {
        if (SortExpression == sortExpression)
        {
            if (SortDirection == "ASC")
                SortDirection = "DESC";
            else if (SortDirection == "DESC")
                SortDirection = "ASC";
            return SortDirection;
        }
        else
        {
            SortExpression = sortExpression;
            SortDirection = "ASC";
            return SortDirection;
        }
    }

 
    protected void botonBuscar_Click(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(NroDoc.Text))
        {

            Cliente cliente = Cliente.buscarCliente(TipoDoc.buscarTipoDoc(Convert.ToInt32(TiposDoc.SelectedValue)).Nombre,NroDoc.Text);


            if (cliente != null)
            {

                DataTable dt = new DataTable();
                dt.Columns.Add("nroDocumento");
                dt.Columns.Add("nombCliente");
                dt.Columns.Add("apeCliente");
                dt.Columns.Add("email");
                dt.Columns.Add("telefono");
                DataRow dr;

                dr = dt.NewRow();
                dr["nroDocumento"] = cliente.TipoYNumDoc;
                dr["nombCliente"] = cliente.Nombre;
                dr["apeCliente"] = cliente.Apellido;
                dr["email"] = cliente.Email;
                dr["telefono"] = cliente.Telefono;
                dt.Rows.Add(dr);

                grdClientes.DataSource = dt;
                grdClientes.DataBind();
            }
        }
        else
        {
            refreshGrid();
        }

    }


    private void refreshGrid()
    {

        DataTable dt = new DataTable();
        dt.Columns.Add("nroDocumento");
        dt.Columns.Add("nombCliente");
        dt.Columns.Add("apeCliente");
        dt.Columns.Add("email");
        dt.Columns.Add("telefono");
      
        DataRow dr;
        List<Cliente> clientes = Cliente.buscarClientes();
        for (int i = 0; i < clientes.Count; i++)
        {
            Cliente cliente = (Cliente)clientes[i];
            dr = dt.NewRow();
            dr["nroDocumento"] = cliente.TipoYNumDoc;
            dr["nombCliente"] = cliente.Nombre;
            dr["apeCliente"] = cliente.Apellido;
            dr["email"] = cliente.Email;
            dr["telefono"] = cliente.Telefono;

            dt.Rows.Add(dr);
        }
        grdClientes.DataSource = dt;
        grdClientes.DataBind();
    }


    protected void grdClientes_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {

        char[] separador = { '-' };
        string[] cli = grdClientes.Rows[e.RowIndex].Cells[0].Text.Split(separador);

        Response.Redirect("EliminarCliente.aspx?tipoDoc=" + cli[0].Trim() + "&nroDoc=" + cli[1].Trim());
    }

    protected void grdClientes_RowEditing(object sender, GridViewEditEventArgs e)
    {
        char[] separador = { '-' };
        string[] cli = grdClientes.Rows[e.NewEditIndex].Cells[0].Text.Split(separador);

        Response.Redirect("ModificarCliente.aspx?tipoDoc=" + cli[0].Trim() + "&nroDoc=" + cli[1].Trim());
    }

 
   
}